第 7 章 GUI(图形用户界面)系统

您所在的位置:网站首页 debian 10 桌面空白 第 7 章 GUI(图形用户界面)系统

第 7 章 GUI(图形用户界面)系统

2024-07-09 19:11| 来源: 网络整理| 查看: 265

第 7 章 GUI(图形用户界面)系统

目录

7.1. GUI(图形用户界面)桌面环境 7.2. GUI(图形用户界面)通信协议 7.3. GUI(图形用户界面)架构 7.4. GUI(图形用户界面)应用 7.5. 用户目录 7.6. 字体 7.6.1. 基础字体 7.6.2. 字体栅格化 7.7. 沙盒 7.8. 远程桌面 7.9. X 服务端连接 7.9.1. X 服务端本地连接 7.9.2. X 服务端远程连接 7.9.3. X 服务端 chroot 连接 7.10. 剪贴板 7.1. GUI(图形用户界面)桌面环境

在 Debian 系统上,有几个功能全面的 GUI 桌面环境选择。

表 7.1. 桌面环境列表

任务软件包 流行度 大小 说明 task-gnome-desktop I:198 9 GNOME 桌面环境 task-xfce-desktop I:96 9 Xfce 桌面环境 task-kde-desktop I:81 6 KDE Plasma 桌面环境 task-mate-desktop I:43 9 MATE 桌面环境 task-cinnamon-desktop I:41 9 Cinnamon 桌面环境 task-lxde-desktop I:29 9 LXDE 桌面环境 task-lxqt-desktop I:18 9 LXQt 桌面环境 task-gnome-flashback-desktop I:13 6 GNOME Flashback 桌面环境 提示

选择的任务元软件包的依赖软件包,在 Debian 非稳定版/测试版 环境下,由于最新的软件包变迁状态,可能没有及时同步。对于 task-gnome-desktop,你可以按下面的方法调整软件包选择:

用 sudo aptitude -u 启动 aptitude(8)。

移动光标到"Tasks"并按回车键。

移动光标到 "End-user" 并按回车键。

移动光标到 "GNOME" 并按回车键。

移动光标到 task-gnome-desktop 并按回车键。

移动光标到 "Depends" 并按 "m"(手工选择)。

移动光标到 "Recommends"并按"m" (手工选择)。

移动光标到 "task-gnome-desktop 并按"-"。(删除)

调整选择的软件包,并删除造成软件包冲突的问题软件包。

按"g" 来开始安装。

本章将大部分关注 Debian 默认的桌面环境: task-gnome-desktop,在 wayland 上提供 GNOME。

7.2. GUI(图形用户界面)通信协议

在 GNOME 桌面使用的 GUI 通信协议可以为:

Wayland (服务端显示协议) (原生)

X 窗口系统核心协议 (通过 xwayland)

请查看 freedesktop.org 站点来了解 Wayland 架构和 X 窗口架构是如何不同。

从用户的观点,不同能够被通俗的概况为:

Wayland 是在同一个主机上的 GUI 通信协议:新、简单、快速,不需要 setuid root 二进制

X Window 是一个具备网络功能的 GUI 通信协议:传统、复杂、慢,需要 setuid root 二进制

对于使用 Wayland 协议的应用,由 VNC 或 RDP 来支持从一个远程主机上访问它们显示的内容。参见 第 7.8 节 “远程桌面”

现代 X 服务器具有 MIT 共享内存扩展 ,他们和本地 X 客户端通过本地共享内存进行通讯. 这就绕过了网络透明的 Xlib 进程间通讯通道,获得了性能。这个情况,也是创建 Wayland 作为本地 GUI 通信协议的背景。

使用从 GNOME 终端启动的 xeyes 程序,你能够检查每个 GUI(图形用户界面)应用程序使用的 GUI 通信协议。

$ xeyes

如果鼠标是在使用 Wayland 服务端显示协议的应用程序上,比如“GNOME 终端”,眼睛不会跟随鼠标移动。

如果鼠标是在使用 X 窗口系统核心协议的应用程序上,比如“xterm”,眼睛会跟随鼠标移动,暴露出不是那么孤立的 X 窗口架构的特性。

到 2021 年 4 月,许多流行的 GUI 应用程序,比如 GNOME 和 LibreOffice (LO) 已经被移植到了 Wayland 服务端显示协议。我发现 xterm, gitk, chromium, firefox, gimp, dia 和 KDE 应用程序任然使用 X 窗口系统核心协议。

注意

对于 Wayland 之上的 xwayland 或 原生的 X 窗口系统,这两个上面的旧的 X 服务端配置文件 "/etc/X11/xorg.conf" 不应当在系统上存在。显卡和输入设备目前是由内核的 DRM、KMS 和 udev 配置。原生的 X 服务端已经重写来使用它们。参见 Linux 内核文档的 "modedb default video mode support"。

7.3. GUI(图形用户界面)架构

这里是 Wayland 环境上用于 GNOME 的著名的 GUI 架构软件包。

表 7.2. 著名的 GUI 架构软件包列表

软件包 流行度 软件包大小 说明 mutter V:1, I:60 187 GNOME 的 mutter 窗口管理器 [auto] xwayland V:240, I:319 2388 运行在 wayland 之上的一个 X 服务端 [auto] gnome-remote-desktop V:35, I:221 1068 使用 PipeWire 的 GNOME 远程桌面后台守护进程(daemon) [auto] gnome-tweaks V:21, I:229 1170 GNOME 的高级配置设置 gnome-shell-extension-prefs V:13, I:213 60 启用/禁用 GNOME 外壳扩展的工具

这里,"[auto]" 表示这些软件包在 task-gnome-desktop 安装时会自动安装。

提示

gnome-tweaks 是一个不可缺少的配置工具。例如:

你能强制调整声音音量,从“General(普通) ”到 "Over-Amplification(过分放大)"。

你能够强迫"Caps"键变成"Esc"键,从"Keyboard & Mouse" -> "Keyboard" -> "Additional Layout Option".

提示

GNOME 桌面环境的详细特征能够使用工具来配置,在按下 Super-键后,通过选择 "settings", "tweaks"或 "extensions" 来启动配置。

7.4. GUI(图形用户界面)应用

现在在 Debian 上,有许多有用的 GUI 应用存在。如果在 GNOME 桌面环境中没有相应功能的软件,那么安装例如 scribus(KDE)这样的软件包是完全可以接受的。但安装过多功能重复的软件包,会使你的系统凌乱。

这里是一份捕获我眼球的 GUI(图形用户界面)程序列表。

表 7.3. 著名的的 GUI(图形用户界面)应用列表

软件包 流行度 软件包大小 类型 说明 evolution V:30, I:239 486 GNOME 个人信息管理(群组软体和电子邮件) thunderbird V:48, I:119 224760 GTK 电子邮件客户端 (Mozilla Thunderbird(雷鸟)) kontact V:1, I:12 2208 KDE 个人信息管理(群组软体和电子邮件) libreoffice-writer V:117, I:435 31474 LO 文字处理软件 abiword V:1, I:8 3542 GNOME 文字处理软件 calligrawords V:0, I:7 6097 KDE 文字处理软件 scribus V:1, I:16 31345 KDE 编辑 PDF 文件的 desktop publishing 编辑器 glabels V:0, I:3 1338 GNOME 标签编辑器 libreoffice-calc V:111, I:432 26009 LO 电子表格 gnumeric V:4, I:14 9910 GNOME 电子表格 calligrasheets V:0, I:5 11396 KDE 电子表格 libreoffice-impress V:69, I:429 2646 LO 演示文稿 calligrastage V:0, I:5 5339 KDE 演示文稿 libreoffice-base V:26, I:121 5003 LO 数据库管理 kexi V:0, I:1 7118 KDE 数据库管理 libreoffice-draw V:72, I:430 10312 LO 矢量图形编辑器(绘图) inkscape V:15, I:112 99800 GNOME 矢量图形编辑器(绘图) karbon V:0, I:6 3610 KDE 矢量图形编辑器(绘图) dia V:2, I:22 3741 GTK 流程图和示意图编辑器 gimp V:50, I:252 19304 GTK 位图图形编辑器 (绘图) shotwell V:17, I:255 6263 GTK 数码照片管理器 digikam V:1, I:9 293 KDE 数码照片管理器 darktable V:4, I:13 30554 GTK 摄影师的虚拟灯台和暗房 planner V:0, I:4 1394 GNOME 项目管理 calligraplan V:0, I:2 19013 KDE 项目管理 gnucash V:2, I:8 28928 GNOME 个人会计 homebank V:0, I:2 1218 GTK 个人会计 lilypond V:0, I:7 16092 - 音乐排版 kmymoney V:0, I:2 13937 KDE 个人会计 librecad V:1, I:15 8963 Qt 应用 计算机辅助设计(CAD) 系统 (2D) freecad I:18 36 Qt 应用 计算机辅助设计(CAD) 系统 (3D) kicad V:3, I:14 236461 GTK 电路图和 PCB 设计软件 xsane V:12, I:144 2339 GTK 扫描仪前段 libreoffice-math V:51, I:432 1898 LO 数学方程/公式编辑器 calibre V:6, I:28 63385 KDE 电子书转换器和库管理 fbreader V:1, I:9 3783 GTK 电子书阅读器 evince V:92, I:314 941 GNOME 文档(pdf)阅读器 okular V:40, I:123 17728 KDE 文档(pdf)阅读器 x11-apps V:31, I:463 2460 单纯的 X 应用 xeyes(1)等。 x11-utils V:192, I:566 651 单纯的 X 应用 xev(1)、 xwininfo(1)等。 7.5. 用户目录

用户目录,比如"~/Desktop"、"~/Documents"……,其默认的名字,使用系统安装时桌面环境的语言。你能够把它们重置为英语:

$ LANGUAGE=C xdg-user-dirs-update --force

然后你手工移到所有数据到新的目录。参加 xdg-user-dirs-update(1)。

通过编辑 "~/.config/user-dirs.dirs",你也能够把它们设置为任何名字。参见 user-dirs.dirs(5)。

7.6. 字体

对于 Debian 的用户,有许多有用的矢量字体存在。用户关注是怎样避免冗余,怎样配置禁用部分已经安装的字体。此外,无用的字体选择可以搞乱你的 GUI(图形用户界面)应用程序菜单。

Debian 系统使用 FreeType 2.0 库来栅格化许多矢量字体格式,用于屏幕和打印:

Type 1 (PostScript) 字体 使用三次 贝塞尔曲线 (差不多废弃的格式)

TrueType 字体 使用二次 贝塞尔曲线 (好的选择格式)

OpenType 字体 使用三次 贝塞尔曲线 (最佳选择格式)

7.6.1. 基础字体

下面的编撰的表格希望帮助用户选择适当的矢量字体,并清楚的理解 排版指标兼容(metric compatibility) 和 字形覆盖。大部分字体覆盖了所有拉丁、希腊和 Cyril 字符。最终选择的激活字体也受你的审美观影响。这些字体能够被用于屏幕显示和纸张打印。

表 7.4. 著名的 TrueType 和 OpenType 字体列表

软件包 流行度 大小 sans serif mono 字体注释 fonts-cantarell V:216, I:306 572 59 - - Cantarell (GNOME 3, 显示) fonts-noto I:153 31 61 63 40 Noto fonts (Google, 有 CJK 的多语言) fonts-dejavu I:421 35 58 68 40 DejaVu (GNOME 2, MCM:Verdana, 扩展 Bitstream Vera) fonts-liberation2 V:130, I:427 15 56 60 40 Liberation 字体 用于 LibreOffice (Red Hat, MCMATC) fonts-croscore V:20, I:40 5274 56 60 40 Chrome OS: Arimo, Tinos 和 Cousine (Google, MCMATC) fonts-crosextra-carlito V:21, I:131 2696 57 - - Chrome 操作系统: Carlito (Google, MCM:Calibri ) fonts-crosextra-caladea I:128 347 - 55 - Chrome 操作系统: Caladea (Google, MCM:Cambria ) (只有拉丁字符 ) fonts-freefont-ttf V:76, I:218 14460 57 59 40 GNU FreeFont (扩展 URW Nimbus) fonts-quicksand V:123, I:438 392 56 - - Debian 任务桌面, Quicksand (显示,只有拉丁字符) fonts-hack V:24, I:120 2508 - - 40 P 给源代码设计的一个字体 Hack (Facebook) fonts-sil-gentiumplus I:32 14345 - 54 - Gentium SIL fonts-sil-charis I:27 6704 - 59 - Charis SIL fonts-urw-base35 V:167, I:472 15560 56 60 40 URW Nimbus (Nimbus Sans, Roman No. 9 L, Mono L, MCAHTC) fonts-ubuntu V:2, I:5 4339 58 - 33 P Ubuntu 字体 (显示) fonts-terminus V:0, I:3 452 - - 33 Cool retro 终端字体 ttf-mscorefonts-installer V:1, I:49 85 56? 60 40 下载微软非开源字体(见下)

这里:

"MCM"表示"与微软提供的字体是排版指标兼容的"

"MCMATC"表示和"微软提供的字体: Arial, Times New Roman, Courier New 排版指标兼容"

"MCAHTC" 表示 "和 Adobe 提供的字体: Helvetica, Times, Courier 排版指标兼容"

在字体类型列的数字表示对相同磅数的字体与 M 字重的相对粗细程度(译注:M 表示 Medium 适中,字体粗细程度的适中值)。

在 mono 字体类型列中的"P" 表示用于编程中,能够清晰的区分 "0"/"O" 和 "1"/"I"/"l"。

ttf-mscorefonts-installer 软件包下载微软的 "Core fonts for the Web" 并安装 Arial, Times New Roman, Courier New, Verdana, ... 。这些安装的字体数据,是非开源的数据。

许多开源的拉丁字体,有 URW Nimbus 家族或 Bitstream Vera 的血统痕迹。

提示

如果你的语言环境所需要的字体没有在上面的字体中涵盖,请使用 aptitude 在 "Tasks" -> "Localization" 下面检查任务软件包列表。字体软件包作为 "Depends:" 或 "Recommends:" 列出,在本地化任务软件包里面是首要候选软件包。

7.6.2. 字体栅格化

Debian 使用 FreeType 来栅格化字体。它的字体选择架构由 Fontconfig 字体配置库提供。

表 7.5. 著名的字体环境和相关软件包列表

软件包 流行度 大小 说明 libfreetype6 V:560, I:997 938 FreeType 字体栅格化库 libfontconfig1 V:554, I:849 587 Fontconfig 字体配置库 fontconfig V:437, I:721 680 fc-*: Fontconfig 命令行命令 font-manager V:2, I:8 1022 Font 管理器: Fontconfig GUI(图形用户界面)命令 nautilus-font-manager V:0, I:0 37 Font 管理器 的 Nautilus 扩展 提示

一些字体软件包,比如说 fonts-noto*,会安装太多的字体。你可以保持某些字体软件包的安装,但在通常使用的情况下禁用。由于 Han unification 中日韩统一表意文字, 一些 Unicode 码点被期望有多个 字形,不希望的字形变体会被没有配置的 Fontconfig 库选择。一个最令人讨厌的情形是在 CJK 中日韩国家中的 "U+3001 IDEOGRAPHIC COMMA" 和 "U+3002 IDEOGRAPHIC FULL STOP"。你能够使用 GUI(图形用户界面)字体管理器 (font-manager) 简单的配置存在的字体来避免这个问题情形。

你也可以从命令行列出字体配置状态。

使用 “fc-match(1)” 查看 fontconfig 的默认字体

使用 “fc-list(1)” 查看所有可用的 fontconfig 字体

你能够从文本编辑器配置字体配置状态,但这是琐碎的。参见 fonts.conf(5)。

7.7. 沙盒

Linux 上大部分 GUI(图形用户界面)应用在非 Debian 的源上,是以二进制格式存在。

AppImage -- 任何地方运行的 Linux 应用

FLATHUB -- Linux 应用,就是这里

snapcraft -- Linux 应用商店

警告

从这些站点来的二进制软件包,有可能包括私有的非开源软件。

对使用 Debian 的自由软件的狂热爱好者,这些二进制格式的分发,有一些存在的理由。因为这能够得到一个干净的库集合,由 Debian 提供的库和由每个应用程序相应的上游开发者使用的库,独立开来。

运行外部二进制的固有风险,能够使用 沙盒环境 减少,它有现代 Linux 安全特性的手段。(参见 第 4.7.5 节 “Linux 安全特性”)。

对于 AppImage 和一些上游站点来的二进制,在 手工配置 后的 firejail 里运行。

对于从 FLATHUB 来的二进制,在 Flatpak 里运行它们。(不需要手工配置。)

对于从 snapcraft 来的二进制,在 Snap 里面运行它们。(不需要手工配置。和后台守护进程(daemon)兼容。)

xdg-desktop-portal 软件包为通用的桌面特性提供一个标准的 API。参见 xdg-desktop-portal (flatpak) 和 xdg-desktop-portal (snap) 。

表 7.6. 著名的沙盒环境和相关软件包列表

软件包 流行度 大小 说明 flatpak V:65, I:70 7499 Flatpak 桌面应用程序配置框架 gnome-software-plugin-flatpak V:20, I:29 254 GNOME 软件 管理器的 Flatpak 支持 snapd V:67, I:70 60022 启用 snap 软件包的后台守护进程(daemon)和工具 gnome-software-plugin-snap V:1, I:2 121 GNOME 软件 管理器的 Snap 支持 xdg-desktop-portal V:303, I:394 1936 Flatpak 和 Snap 的桌面集成门户 xdg-desktop-portal-gtk V:274, I:392 715 gtk (GNOME) 的 xdg-desktop-portal 后端 xdg-desktop-portal-kde V:53, I:72 1438 Qt (KDE) 的 xdg-desktop-portal 后端 xdg-desktop-portal-wlr V:0, I:4 135 wlroots (Wayland) 的 xdg-desktop-portal 后端 firejail V:1, I:4 1771 和 AppImage 一起使用的 SUID 安全沙盒程序 firejail

这个沙盒环境技术和在智能手机操作系统上的应用程序非常相像,这里的应用程序也是在资源访问受到控制下执行的。

一些大的 GUI(图形用户界面)应用程序,比如说 Debian 上的网页浏览器,也在内部使用了沙盒环境技术,这样让它们安全性更好。

7.8. 远程桌面

表 7.7. 著名的远程访问服务端列表

访问在远程主机上使用 Wayland 协议的桌面和应用,由远程主机上的 GNOME 远程桌面 软件提供,通过 VNC 或 RDP 到本地客户端。

访问所有 QEMU 虚拟机桌面的能力是由 SPICE (the Simple Protocol for Independent Computing Environments) 协议提供。

软件包 流行度 大小 协议 说明 gnome-remote-desktop V:35, I:221 1068 RDP GNOME 远程桌面 服务端 xrdp V:22, I:24 3202 RDP xrdp, 远程桌面协议 (RDP) 服务器 x11vnc V:6, I:23 2107 RFB (VNC) x11vnc, 远程帧缓存协议 (VNC) 服务器 tigervnc-standalone-server V:4, I:15 2768 RFB (VNC) TigerVNC, 远程帧缓存协议 (VNC) 服务器 gnome-connections V:0, I:1 1356 RDP, RFB (VNC) GNOME 远程桌面客户端 vinagre V:2, I:68 4249 RDP, RFB (VNC), SPICE, SSH Vinagre: GNOME 远程桌面客户端 remmina V:15, I:72 953 RDP, RFB (VNC), SPICE, SSH, ... Remmina: GTK 远程桌面客户端 krdc V:1, I:17 3873 RDP, RFB (VNC) KRDC: KDE 远程桌面客户端 guacd V:0, I:0 83 RDP, RFB (VNC), SSH / HTML5 Apache Guacamole: 无客户端的远程桌面网关 (HTML5) virt-viewer V:5, I:52 1284 RFB (VNC), SPICE 虚拟机管理器 下的客户机操作系统的 GUI 显示客户端 7.9. X 服务端连接

有几种方法从远程主机上的应用连接到 X 服务端(包括本地主机的 xwayland )。

表 7.8. 连接到 X 服务端的方式

软件包 流行度 大小 命令 说明 openssh-server V:730, I:814 1804 sshd 使用选项 X11-forwarding SSH 服务端(安全) openssh-client V:866, I:996 4959 ssh -X SSH 客户端(安全) xauth V:165, I:961 81 xauth X 授权文件工具 x11-xserver-utils V:302, I:528 568 xhost X 服务端访问控制 7.9.1. X 服务端本地连接

使用 X 核心协议的本地应用,能够通过本地 UNIX 域名套接字进行本地连接,来访问本地的 X 服务端。这可以通过拥有 access cookie 的授权文件来授权。 授权文件的位置通过"$XAUTHORITY"环境变量确定,X 显示通过"$DISPLAY" 环境变量确定。由于这些环境变量通常会被自动设置,不需要另行指定。 例如,下面的 "gitk"。

username $ gitk 注意

对于 xwayland, XAUTHORITY 有类似 "/run/user/1000/.mutter-Xwaylandauth.YVSU30"的值。

7.9.2. X 服务端远程连接

使用 X 核心协议的远程应用访问本地的 X 服务器显示,由 X11 转发特性支持。

在本地主机中打开一个 gnome 终端。

通过下列命令,运行带 -X 选项的 ssh(1),建立与远程站点的连接。

localname @ localhost $ ssh -q -X [email protected] Password:

通过下列命令,在远程站点运行一个 X 应用程序,例如 “gitk”。

loginname @ remotehost $ gitk

这个方法可以显示来自远程 X 客户端的输出,相当于它是通过一个本地 UNIX 域名套接字进行本地的连接。

参见介绍 SSH/SSHD 的 第 6.3 节 “服务器远程访问和工具 (SSH)” 。

警告

由于安全的原因,在 Debian 系统上,远程 TCP/IP 连接到 X 服务端,是默认被禁用的。不要通过简单的设置 "xhost +"来启用它们。如果能够避免的话,也不要启用 XDMCP 连接。

7.9.3. X 服务端 chroot 连接

在同一个环境下(比如 chroot),使用 X 核心协议的应用访问同一主机的 X 服务端,授权文件无法访问,能够使用 xhost 进行安全的授权,通过使用 User-based access ,例如下面的 "gitk"。

username $ xhost + si:localuser:root ; sudo chroot /path/to # cd /src # gitk # exit username $ xhost - 7.10. 剪贴板

剪贴文本到剪贴板,参见 第 1.4.4 节 “鼠标操作”。

剪贴图像到剪贴板,参见 第 11.6 节 “图形数据工具”。

一些命令行的命令也能操作字符剪贴板(主要键和剪贴板)。

表 7.9. 操作字符剪贴板相关程序列表

软件包 流行度 软件包大小 当前目标 说明 xsel V:9, I:42 55 X X 选择的命令行接口(剪贴板) xclip V:12, I:63 62 X X 选择的命令行接口(剪贴板) wl-clipboard V:3, I:14 162 Wayland wl-copy wl-paste: Wayland 剪贴板 的命令行接口 gpm V:10, I:12 521 Linux 控制台 在 Linux 控制台上捕获鼠标事件的后台守护进程(daemon)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3